package com.ybbase.framework.service.flow;

import org.activiti.engine.repository.ProcessDefinition;

/**
 * @author cg
 * @date 2019-08-22 10:04
 * @DEC
 */
public interface WorkflowProcessDefinitionService {
    /**
     * 根据流程实例ID查询流程定义对象{@link ProcessDefinition}
     *
     * @param processInstanceId 流程实例ID
     * @return 流程定义对象{@link ProcessDefinition}
     */
    ProcessDefinition findProcessDefinitionByPid(String processInstanceId);

    /**
     * 根据流程定义ID查询流程定义对象{@link ProcessDefinition}
     *
     * @param processDefinitionId 流程定义对象ID
     * @return 流程定义对象{@link ProcessDefinition}
     */
    ProcessDefinition findProcessDefinition(String processDefinitionId);

    /**
     * 部署保存流程或重新保存
     *
     * @param modelId 模型编码
     * @throws Exception 异常
     * @author cg
     * @date 2019-08-23 17:20
     * @since 4.0
     */
    void deployProcessSave(String modelId) throws Exception;

    /**
     * 重新部署所有流程
     *
     * @return
     * @throws Exception
     * @author cg
     * @date 2019-08-23 17:25
     * @since
     */
    void deployProcessAll() throws Exception;
}
